【ElastiCache】memcachedのMulti-AZ配置(ゾーンをまたいだノード分散配置)が来ました!!!
Multi-AZ・Single-AZについて表現を改めてました。
RDSなどのデータ同期を含むMulti-AZオプションとは多少仕組みが違うためです。
こんばんは、三井田です
Facebookを見てたら、速報を受信しました。
Amazon ElastiCache Flexible Node Placement
従来memcachedエンジンのElastiCacheクラスタは、ノードを全て同じゾーンに配置する仕様でした。
今回の機能拡張「Flexible Node Placement」で、ノードを複数ゾーンにまたがって分散配置できるようになりました。
早速 memcachedのノードを、Multi-AZに分散配置する手順を試してみました。
新規構築
ElastiCache (memcached)エンジンで新規構築する画面を紹介します。
Preference Zoneの選択肢が変わりました。
Spread Nodes Across Zones
今回は、新しい選択肢の「Spread Nodes Across Zones」を選択します。
あらかじめ、Multi-AZでサブネットグループを作成しておき、それを選択します。
あとは、Number of Nodesで指定した台数のノードを、AWSが適切にゾーンに分散して起動してくれます。
Specify Zones
従来のように特定のゾーンを選ぶには、「Specify Zones」でゾーンごとの台数を指定します。
クラスタができました!
ノードが分散されました!台数を調整することで、最低限必要なキャッシュを分散配置し、ゾーン障害に耐える冗長構成とすることができます。 *1
ノードの追加
ノード追加の際にもゾーンを選べるようになりました。
Spread Nodes Across Zones
「Spread Nodes Across Zones」を選ぶと、AWSがよしなに分散してくれるようです。サブネットグループはMulti-AZで作成しておく必要があります。
Specify Zones
「Specify Zones」を選ぶと、どのゾーンに何台配置するかを指定できます。
まとめ
従来、ElastiCache (memcachedクラスタ)は、単一ゾーンにしか構成できなかったため、可用性を重視するとそれぞれのゾーンにクラスタを作成し、アプリケーションは、キャッシュの書込みは両方のクラスタに行い読み込みは自身のゾーンのクラスタから、というような工夫が必要でした。
今回の機能拡張では、ゾーン障害による全ノードへ不通といった状況は回避できるようになったと考えられます。
もちろん、従来通りひとつのゾーンに寄せて構成することもできます。
脚注
- 大規模なゾーン障害のときに、クラスタの状態がそれぞれのAZからどのように見えるのかは、今後検証しないといけませんね。「Spread Nodes Across Zones」の場合は、その辺も自動的にマネージしてくれると良いなと思ってます。 ↩